// AttachMatrixFunction.h: interface for the AttachMatrixFunction class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ATTACHMATRIXFUNCTION_H__C63CE1A1_F4FA_4BA9_A9B5_89A6D8367F37__INCLUDED_)
#define AFX_ATTACHMATRIXFUNCTION_H__C63CE1A1_F4FA_4BA9_A9B5_89A6D8367F37__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "JointOwnFunction.h"
#include "edpoint3d.h"
#include "edvector3d.h"
#include <gemat3d.h>
#include <gepnt3d.h>

class DllExport AttachMatrixFunction : public JointOwnFunction  
{
	DECLARE_DYNAMIC_CREATE(AttachMatrixFunction);
public:
	AttachMatrixFunction();
	virtual ~AttachMatrixFunction();

public:
	void BasePointFormer(const CString& strFormer);
	void vXFormer(const CString& strFormer);
	void vZFormer(const CString& strFormer);
	
	void PartID(const CString& strID){
		m_strPartID = strID;
	}

	const CString& PartID() const {
		return m_strPartID;
	}

	AcGePoint3d BasePoint();
	AcGeMatrix3d Matrix();

	virtual FunctionObject* InstanceFunction(Joint* pJoint);
	virtual BOOL Execute();
private:
	EDPoint3d m_basePtFormer;
	EDVector3d m_vXFormer;
	EDVector3d m_vZFormer;
	CString m_strPartID;

	EDPoint3d m_basePt;
	EDVector3d m_vX;
	EDVector3d m_vZ;
};

#endif // !defined(AFX_ATTACHMATRIXFUNCTION_H__C63CE1A1_F4FA_4BA9_A9B5_89A6D8367F37__INCLUDED_)
